#ifndef C_MATRIX
#define C_MATRIX
#include "parametrage.h"
#include "Vector.h"

class Matrix
{
	private:
		double tab[M_SIZE][M_SIZE];

	public:
		Matrix();
		Matrix(const Vector &, const Vector &, const Vector &, const Point &);
		Matrix(const Matrix &);
		
		Matrix operator+(const Matrix &) const;
		Matrix operator*(const Matrix &) const;
		Vector operator*(const Vector &) const;
		Point operator*(const Point &) const;
		
		double get_tab(int i, int j) const{return tab[i][j];}
		void set_tab(int i, int j, double val){tab[i][j] = val;}
		static Matrix translation(const Vector &);
		static Matrix rotation_x(const double);
		static Matrix rotation_y(const double);
		static Matrix rotation_z(const double);
		static Matrix scopeChange(const Point &, const Vector &);
		Matrix transposed() const;
		void display() const;
};

#endif
